//第一步：导入网络模块
import http from '@ohos.net.http'
import api from './index'
import { request } from '@kit.BasicServicesKit';


//封装GET请求
//网络请求  是否基于promise
const get =  (url:string,data={})=> {
  //把'data'拼接成’str‘
  let str = '';
  if(data){
    for(let key in data){
      str+=key+"="+data[key]+"&"
    }
    str = str.slice(0,str.length-1)
    console.log(str);
  }

  // 创建请求任务
  let httpRequest = http.createHttp();
  // 调用request方法返回promise
  return httpRequest.request(
    str ? url+"?"+str : url,  // 请求地址
    {
      method: http.RequestMethod.GET,// 请求方式
      connectTimeout: 60000,
      readTimeout: 60000,
      header: {
        'Content-Type': 'application/json' // 请求头信息
      }
    })
}


//封装POST请求
// const post =  (url:string,data={})=> {
//   // 把 'data' 拼接成 'str'
//   let str = '';
//   if(data){
//     for(let key in data){
//       str+=key+"="+data[key]+"&"
//     }
//     str = str.slice(0,str.length-1);
//     // console.log(str);
//   }
//   // 把参数拼接成 “account=123@qq.com&password=12312312”
//   // 创建请求任务
//   let httpRequest = http.createHttp();
//   // 调用request方法返回promise
//   return httpRequest.request(
//     url,  // 请求地址
//     {
//       method: http.RequestMethod.POST,// 请求方式
//       // extraData: data, //错误的写法
//       // extraData: {’data‘:data},//错误的写法
//       extraData: str,
//       // 传递参数给后台
//       connectTimeout: 60000,
//       readTimeout: 60000,
//       header: {
//         'Content-Type': 'application/x-www-form-urlencoded' // 请求头信息
//       },
//       //返回数据类型
//       expectDataType: http.HttpDataType.STRING,
//     })
// }
const post =  (url:string,data={})=> {
  // 创建请求任务
  let httpRequest = http.createHttp();
  // 调用request方法返回promise
  return httpRequest.request(
    url,  // 请求地址
    {
      method: http.RequestMethod.POST,// 请求方式
      extraData: data,//传递参数给后台
      connectTimeout: 60000,
      readTimeout: 60000,
      header: {
        'Content-Type': 'application/json', // 请求头信息
      }
    })
}


//接口一：注册
// http://localhost:4000/api/user/register
export const registerFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/user/register`,data)
}

//接口二：登录
// http://localhost:4000/api/user/login
export const loginFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/user/login`,data)
}

//接口三：找回密码
// http://localhost:4000/api/user/pwd
export const pwdFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/user/pwd`,data)
}

//接口四：发送邮箱验证码
// http://localhost:4000/api/email/send
export const sendFn = (data={}) => {
  //调用函数可以返回promise
  return get(`${api.host}/api/email/send`,data)
}

//接口五：校验验证码
// http://localhost:4000/api/email/verify
export const verifyFn = (data={}) => {
  //调用函数可以返回promise
  return get(`${api.host}/api/email/verify`,data)
}

//接口六：获取用户信息
// http://localhost:4000/api/user/info
export const infoFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/user/info`,data)
}

//接口七：修改用户信息
// http://localhost:4000/api/user/edit
export const editFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/user/edit`,data)
}

//接口八：添加记账信息
// http://localhost:4000/api/transaction/add
export const addFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/transaction/add`,data)
}

//接口九：获取本月支出信息
// http://localhost:4000/api/transaction/getMonthlyFinancials
export const MonthlyFinancialsFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/transaction/getMonthlyFinancials`,data)
}

//接口十：获取近3日账单信息
// http://localhost:4000/api/transaction/api/transaction/getRecentBills
export const RecentBillsFn = (data={}) => {
  //调用函数可以返回promise
  return post(`${api.host}/api/transaction/getRecentBills`,data)
}

//接口十一：获取用户财务信息（总资产、总负债、净资产）
// http://localhost:4000/api/transaction/api/transaction/financialStatus
export const FinancialStatusFn = (data={}) => {
  //调用函数可以返回promise
  return get(`${api.host}/api/transaction/financialStatus`,data)
}

//接口十二：获取所有账单信息并按日期分组
// http://localhost:4000/api/transaction/api/transaction/billsByDate
export const BillsByDateFn = (data={}) => {
  //调用函数可以返回promise
  return get(`${api.host}/api/transaction/billsByDate`,data)
}
